home *** CD-ROM | disk | FTP | other *** search
- <?php
-
- function get_the_category($id = false) {
- global $post, $category_cache;
-
- if ( !$id )
- $id = $post->ID;
-
- if ( ! isset($category_cache[$id]) )
- update_post_category_cache($id);
-
- $categories = $category_cache[$id];
-
- if (!empty($categories))
- sort($categories);
- else
- $categories = array();
-
- return $categories;
- }
-
- function get_category_link($category_id) {
- global $wp_rewrite;
- $catlink = $wp_rewrite->get_category_permastruct();
-
- if ( empty($catlink) ) {
- $file = get_settings('home') . '/' . get_settings('blogfilename');
- $catlink = $file . '?cat=' . $category_id;
- } else {
- $category = &get_category($category_id);
- $category_nicename = $category->category_nicename;
-
- if ($parent = $category->category_parent)
- $category_nicename = get_category_parents($parent, false, '/', true) . $category_nicename . '/';
-
- $catlink = str_replace('%category%', $category_nicename, $catlink);
- $catlink = get_settings('home') . trailingslashit($catlink);
- }
- return apply_filters('category_link', $catlink, $category_id);
- }
-
- function get_the_category_list($separator = '', $parents='') {
- $categories = get_the_category();
- if (empty($categories)) {
- return apply_filters('the_category', __('Uncategorized'), $separator, $parents);
- }
-
- $thelist = '';
- if ('' == $separator) {
- $thelist .= '<ul class="post-categories">';
- foreach ($categories as $category) {
- $category->cat_name = $category->cat_name;
- $thelist .= "\n\t<li>";
- switch(strtolower($parents)) {
- case 'multiple':
- if ($category->category_parent) {
- $thelist .= get_category_parents($category->category_parent, TRUE);
- }
- $thelist .= '<a href="' . get_category_link($category->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $category->cat_name) . '" rel="category tag">'.$category->cat_name.'</a></li>';
- break;
- case 'single':
- $thelist .= '<a href="' . get_category_link($category->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $category->cat_name) . ' rel="category tag">';
- if ($category->category_parent) {
- $thelist .= get_category_parents($category->category_parent, FALSE);
- }
- $thelist .= $category->cat_name.'</a></li>';
- break;
- case '':
- default:
- $thelist .= '<a href="' . get_category_link($category->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $category->cat_name) . '" rel="category tag">'.$category->cat_name.'</a></li>';
- }
- }
- $thelist .= '</ul>';
- } else {
- $i = 0;
- foreach ($categories as $category) {
- $category->cat_name = $category->cat_name;
- if (0 < $i) $thelist .= $separator . ' ';
- switch(strtolower($parents)) {
- case 'multiple':
- if ($category->category_parent) $thelist .= get_category_parents($category->category_parent, TRUE);
- $thelist .= '<a href="' . get_category_link($category->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $category->cat_name) . '" rel="category tag">'.$category->cat_name.'</a>';
- break;
- case 'single':
- $thelist .= '<a href="' . get_category_link($category->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $category->cat_name) . '" rel="category tag">';
- if ($category->category_parent) $thelist .= get_category_parents($category->category_parent, FALSE);
- $thelist .= "$category->cat_name</a>";
- break;
- case '':
- default:
- $thelist .= '<a href="' . get_category_link($category->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $category->cat_name) . '" rel="category tag">'.$category->cat_name.'</a>';
- }
- ++$i;
- }
- }
- return apply_filters('the_category', $thelist, $separator, $parents);
- }
-
- function the_category($separator = '', $parents='') {
- echo get_the_category_list($separator, $parents);
- }
-
- function get_the_category_by_ID($cat_ID) {
- $cat_ID = (int) $cat_ID;
- $category = &get_category($cat_ID);
- return $category->cat_name;
- }
-
- function get_category_parents($id, $link = FALSE, $separator = '/', $nicename = FALSE){
- $chain = '';
- $parent = &get_category($id);
- if ($nicename) {
- $name = $parent->category_nicename;
- } else {
- $name = $parent->cat_name;
- }
- if ($parent->category_parent) $chain .= get_category_parents($parent->category_parent, $link, $separator, $nicename);
- if ($link) {
- $chain .= '<a href="' . get_category_link($parent->cat_ID) . '" title="' . sprintf(__("View all posts in %s"), $parent->cat_name) . '">'.$name.'</a>' . $separator;
- } else {
- $chain .= $name.$separator;
- }
- return $chain;
- }
-
- function get_category_children($id, $before = '/', $after = '') {
- global $cache_categories;
-
- if ( ! isset($cache_categories))
- update_category_cache();
-
- $c_cache = $cache_categories; // Can't do recursive foreach on a global, have to make a copy
- $chain = '';
- foreach ($c_cache as $category){
- if ($category->category_parent == $id){
- $chain .= $before.$category->cat_ID.$after;
- $chain .= get_category_children($category->cat_ID, $before, $after);
- }
- }
- return $chain;
- }
-
- // Deprecated.
- function the_category_ID($echo = true) {
- // Grab the first cat in the list.
- $categories = get_the_category();
- $cat = $categories[0]->cat_ID;
-
- if ($echo) echo $cat;
-
- return $cat;
- }
-
- // Deprecated.
- function the_category_head($before='', $after='') {
- global $currentcat, $previouscat;
- // Grab the first cat in the list.
- $categories = get_the_category();
- $currentcat = $categories[0]->category_id;
- if ($currentcat != $previouscat) {
- echo $before;
- echo get_the_category_by_ID($currentcat);
- echo $after;
- $previouscat = $currentcat;
- }
- }
-
- function category_description($category = 0) {
- global $cat;
- if (!$category) $category = $cat;
- $category = & get_category($category);
- return apply_filters('category_description', $category->category_description, $category->cat_ID);
- }
-
- // out of the WordPress loop
- function dropdown_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_order = 'asc',
- $optiondates = 0, $optioncount = 0, $hide_empty = 1, $optionnone=FALSE,
- $selected=0, $hide=0) {
- global $wpdb;
- if (($file == 'blah') || ($file == '')) $file = get_settings('home') . '/';
- if (!$selected) $selected=$cat;
- $sort_column = 'cat_'.$sort_column;
-
- $query = "
- SELECT cat_ID, cat_name, category_nicename,category_parent,
- COUNT($wpdb->post2cat.post_id) AS cat_count,
- DAYOFMONTH(MAX(post_date)) AS lastday, MONTH(MAX(post_date)) AS lastmonth
- FROM $wpdb->categories LEFT JOIN $wpdb->post2cat ON (cat_ID = category_id)
- LEFT JOIN $wpdb->posts ON (ID = post_id)
- WHERE cat_ID > 0
- ";
- if ($hide) {
- $query .= " AND cat_ID != $hide";
- $query .= get_category_children($hide, " AND cat_ID != ");
- }
- $query .=" GROUP BY cat_ID";
- if (intval($hide_empty) == 1) $query .= " HAVING cat_count > 0";
- $query .= " ORDER BY $sort_column $sort_order, post_date DESC";
-
- $categories = $wpdb->get_results($query);
- echo "<select name='cat' class='postform'>\n";
- if (intval($optionall) == 1) {
- $all = apply_filters('list_cats', $all);
- echo "\t<option value='0'>$all</option>\n";
- }
- if (intval($optionnone) == 1) echo "\t<option value='-1'>".__('None')."</option>\n";
- if ($categories) {
- foreach ($categories as $category) {
- $cat_name = apply_filters('list_cats', $category->cat_name, $category);
- echo "\t<option value=\"".$category->cat_ID."\"";
- if ($category->cat_ID == $selected)
- echo ' selected="selected"';
- echo '>';
- echo $cat_name;
- if (intval($optioncount) == 1) echo ' ('.$category->cat_count.')';
- if (intval($optiondates) == 1) echo ' '.$category->lastday.'/'.$category->lastmonth;
- echo "</option>\n";
- }
- }
- echo "</select>\n";
- }
-
- // out of the WordPress loop
- function wp_list_cats($args = '') {
- parse_str($args, $r);
- if (!isset($r['optionall'])) $r['optionall'] = 0;
- if (!isset($r['all'])) $r['all'] = 'All';
- if (!isset($r['sort_column'])) $r['sort_column'] = 'ID';
- if (!isset($r['sort_order'])) $r['sort_order'] = 'asc';
- if (!isset($r['file'])) $r['file'] = '';
- if (!isset($r['list'])) $r['list'] = true;
- if (!isset($r['optiondates'])) $r['optiondates'] = 0;
- if (!isset($r['optioncount'])) $r['optioncount'] = 0;
- if (!isset($r['hide_empty'])) $r['hide_empty'] = 1;
- if (!isset($r['use_desc_for_title'])) $r['use_desc_for_title'] = 1;
- if (!isset($r['children'])) $r['children'] = true;
- if (!isset($r['child_of'])) $r['child_of'] = 0;
- if (!isset($r['categories'])) $r['categories'] = 0;
- if (!isset($r['recurse'])) $r['recurse'] = 0;
- if (!isset($r['feed'])) $r['feed'] = '';
- if (!isset($r['feed_image'])) $r['feed_image'] = '';
- if (!isset($r['exclude'])) $r['exclude'] = '';
- if (!isset($r['hierarchical'])) $r['hierarchical'] = true;
-
- list_cats($r['optionall'], $r['all'], $r['sort_column'], $r['sort_order'], $r['file'], $r['list'], $r['optiondates'], $r['optioncount'], $r['hide_empty'], $r['use_desc_for_title'], $r['children'], $r['child_of'], $r['categories'], $r['recurse'], $r['feed'], $r['feed_image'], $r['exclude'], $r['hierarchical']);
- }
-
- function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_order = 'asc', $file = '', $list = true, $optiondates = 0, $optioncount = 0, $hide_empty = 1, $use_desc_for_title = 1, $children=FALSE, $child_of=0, $categories=0, $recurse=0, $feed = '', $feed_image = '', $exclude = '', $hierarchical=FALSE) {
- global $wpdb, $category_posts;
- // Optiondates now works
- if ('' == $file) {
- $file = get_settings('home') . '/';
- }
-
- $exclusions = '';
- if (!empty($exclude)) {
- $excats = preg_split('/[\s,]+/',$exclude);
- if (count($excats)) {
- foreach ($excats as $excat) {
- $exclusions .= ' AND cat_ID <> ' . intval($excat) . ' ';
- }
- }
- }
-
- $exclusions = apply_filters('list_cats_exclusions', $exclusions);
-
- if (intval($categories)==0){
- $sort_column = 'cat_'.$sort_column;
-
- $query = "
- SELECT cat_ID, cat_name, category_nicename, category_description, category_parent
- FROM $wpdb->categories
- WHERE cat_ID > 0 $exclusions
- ORDER BY $sort_column $sort_order";
-
- $categories = $wpdb->get_results($query);
- }
- if (!count($category_posts)) {
- $now = current_time('mysql', 1);
- $cat_counts = $wpdb->get_results(" SELECT cat_ID,
- COUNT($wpdb->post2cat.post_id) AS cat_count
- FROM $wpdb->categories
- INNER JOIN $wpdb->post2cat ON (cat_ID = category_id)
- INNER JOIN $wpdb->posts ON (ID = post_id)
- WHERE post_status = 'publish'
- AND post_date_gmt < '$now' $exclusions
- GROUP BY category_id");
- if (! empty($cat_counts)) {
- foreach ($cat_counts as $cat_count) {
- if (1 != intval($hide_empty) || $cat_count > 0) {
- $category_posts["$cat_count->cat_ID"] = $cat_count->cat_count;
- }
- }
- }
- }
-
- if ( $optiondates ) {
- $cat_dates = $wpdb->get_results(" SELECT category_id,
- UNIX_TIMESTAMP( MAX(post_date) ) AS ts
- FROM $wpdb->posts, $wpdb->post2cat
- WHERE post_status = 'publish' AND post_id = ID $exclusions
- GROUP BY category_id");
- foreach ($cat_dates as $cat_date) {
- $category_timestamp["$cat_date->category_id"] = $cat_date->ts;
- }
- }
-
- $num_found=0;
- $thelist = "";
-
- foreach ($categories as $category) {
- if ((intval($hide_empty) == 0 || isset($category_posts["$category->cat_ID"])) && (!$hierarchical || $category->category_parent == $child_of) ) {
- $num_found++;
- $link = '<a href="'.get_category_link($category->cat_ID).'" ';
- if ($use_desc_for_title == 0 || empty($category->category_description)) {
- $link .= 'title="'. sprintf(__("View all posts filed under %s"), wp_specialchars($category->cat_name)) . '"';
- } else {
- $link .= 'title="' . wp_specialchars(apply_filters('category_description',$category->category_description,$category)) . '"';
- }
- $link .= '>';
- $link .= apply_filters('list_cats', $category->cat_name, $category).'</a>';
-
- if ( (! empty($feed_image)) || (! empty($feed)) ) {
-
- $link .= ' ';
-
- if (empty($feed_image)) {
- $link .= '(';
- }
-
- $link .= '<a href="' . get_category_rss_link(0, $category->cat_ID, $category->category_nicename) . '"';
-
- if ( !empty($feed) ) {
- $title = ' title="' . $feed . '"';
- $alt = ' alt="' . $feed . '"';
- $name = $feed;
- $link .= $title;
- }
-
- $link .= '>';
-
- if (! empty($feed_image)) {
- $link .= "<img src='$feed_image' $alt$title" . ' />';
- } else {
- $link .= $name;
- }
-
- $link .= '</a>';
-
- if (empty($feed_image)) {
- $link .= ')';
- }
- }
-
- if (intval($optioncount) == 1) {
- $link .= ' ('.intval($category_posts["$category->cat_ID"]).')';
- }
- if ( $optiondates ) {
- if ( $optiondates == 1 ) $optiondates = 'Y-m-d';
- $link .= ' ' . gmdate($optiondates, $category_timestamp["$category->cat_ID"]);
- }
- if ($list) {
- $thelist .= "\t<li>$link\n";
- } else {
- $thelist .= "\t$link<br />\n";
- }
- if ($hierarchical && $children) $thelist .= list_cats($optionall, $all, $sort_column, $sort_order, $file, $list, $optiondates, $optioncount, $hide_empty, $use_desc_for_title, $hierarchical, $category->cat_ID, $categories, 1, $feed, $feed_image, $exclude, $hierarchical);
- if ($list) $thelist .= "</li>\n";
- }
- }
- if (!$num_found && !$child_of){
- if ($list) {
- $before = '<li>';
- $after = '</li>';
- }
- echo $before . __("No categories") . $after . "\n";
- return;
- }
- if ($list && $child_of && $num_found && $recurse) {
- $pre = "\t\t<ul class='children'>";
- $post = "\t\t</ul>\n";
- } else {
- $pre = $post = '';
- }
- $thelist = $pre . $thelist . $post;
- if ($recurse) {
- return $thelist;
- }
- echo apply_filters('list_cats', $thelist);
- }
-
- function in_category($category) { // Check if the current post is in the given category
- global $post, $category_cache;
- $cats = '';
- foreach ($category_cache[$post->ID] as $cat) :
- $cats[] = $cat->cat_ID;
- endforeach;
-
- if ( in_array($category, $cats) )
- return true;
- else
- return false;
- }
- ?>
-